const { noticeApi } = require('../../../utils/api');

Page({
  data: {
    notices: [],
    loading: false,
    error: null,
    noticeStats: {
      readCount: 0,
      chainCount: 0,
      receiptCount: 0,
      signatureCount: 0
    }
  },

  onLoad() {
    this.loadNotices();
  },

  onShow() {
    // 页面显示时刷新数据
    this.loadNotices();
  },

  // 加载通知列表
  async loadNotices() {
    this.setData({ loading: true, error: null });
    
    try {
      const notices = await noticeApi.getAllNotices();
      console.log('获取通知列表成功:', notices);
      
      // 处理通知数据，添加格式化时间等
      const processedNotices = notices.map(notice => ({
        ...notice,
        formattedTime: this.formatTime(notice.createTime),
        isTopText: notice.isTop === 1 ? '置顶' : ''
      }));
      
      // 计算通知统计数据
      const stats = this.calculateNoticeStats(processedNotices);
      
      this.setData({ 
        notices: processedNotices.slice(0, 5), // 只显示最新5条
        noticeStats: stats,
        loading: false 
      });
    } catch (error) {
      console.error('获取通知列表失败:', error);
      this.setData({ 
        error: '加载失败，请重试',
        loading: false 
      });
      
      wx.showToast({
        title: '加载失败',
        icon: 'none'
      });
    }
  },

  // 计算通知统计数据
  calculateNoticeStats(notices) {
    const stats = {
      readCount: 0,
      chainCount: 0,
      receiptCount: 0,
      signatureCount: 0
    };
    
    notices.forEach(notice => {
      // 根据通知类型进行统计（这里需要根据实际的通知类型字段调整）
      const noticeType = notice.noticeType || 'read'; // 假设有noticeType字段
      
      switch (noticeType) {
        case 'read':
          stats.readCount++;
          break;
        case 'chain':
          stats.chainCount++;
          break;
        case 'receipt':
          stats.receiptCount++;
          break;
        case 'signature':
          stats.signatureCount++;
          break;
        default:
          stats.readCount++;
      }
    });
    
    return stats;
  },

  // 格式化时间
  formatTime(dateString) {
    if (!dateString) return '';
    
    const date = new Date(dateString);
    const now = new Date();
    const diff = now - date;
    
    // 小于1分钟
    if (diff < 60000) {
      return '刚刚';
    }
    // 小于1小时
    if (diff < 3600000) {
      return Math.floor(diff / 60000) + '分钟前';
    }
    // 小于1天
    if (diff < 86400000) {
      return Math.floor(diff / 3600000) + '小时前';
    }
    // 小于7天
    if (diff < 604800000) {
      return Math.floor(diff / 86400000) + '天前';
    }
    
    // 超过7天显示具体日期
    return date.toLocaleDateString();
  },

  // 点击通知项
  onNoticeTap(e) {
    const { noticeId } = e.currentTarget.dataset;
    console.log('点击通知ID:', noticeId);
    
    // 根据ID查找通知详情
    const notice = this.data.notices.find(n => n.noticeId == noticeId);
    if (notice) {
      wx.showModal({
        title: notice.title,
        content: notice.content,
        showCancel: false
      });
    }
  },

  // 下拉刷新
  onPullDownRefresh() {
    this.loadNotices().then(() => {
      wx.stopPullDownRefresh();
    }).catch((error) => {
      console.error('下拉刷新失败:', error);
      wx.stopPullDownRefresh();
    });
  },

  // 跳转到全部通知页面
  goToAllNotices() {
    console.log('准备跳转到全部通知页面');
    
    try {
      wx.navigateTo({
        url: '/pages/class/notice/all-notices/index',
        success: (res) => {
          console.log('跳转全部通知页面成功:', res);
        },
        fail: (err) => {
          console.error('跳转全部通知页面失败:', err);
          wx.showModal({
            title: '跳转失败',
            content: `错误信息: ${err.errMsg || '未知错误'}`,
            showCancel: false
          });
        }
      });
    } catch (error) {
      console.error('跳转全部通知页面异常:', error);
      wx.showModal({
        title: '跳转异常',
        content: `异常信息: ${error.message}`,
        showCancel: false
      });
    }
  },

  // 跳转到我发布的通知页面
  goToMyNotices() {
    console.log('准备跳转到我发布的通知页面');
    
    try {
      wx.navigateTo({
        url: '/pages/class/notice/my-notices/index',
        success: (res) => {
          console.log('跳转我发布的通知页面成功:', res);
        },
        fail: (err) => {
          console.error('跳转我发布的通知页面失败:', err);
          wx.showModal({
            title: '跳转失败',
            content: `错误信息: ${err.errMsg || '未知错误'}`,
            showCancel: false
          });
        }
      });
    } catch (error) {
      console.error('跳转我发布的通知页面异常:', error);
      wx.showModal({
        title: '跳转异常',
        content: `异常信息: ${error.message}`,
        showCancel: false
      });
    }
  },

  // 跳转到新建通知页面
  goToCreateNotice() {
    console.log('准备跳转到新建通知页面');
    
    try {
      wx.navigateTo({
        url: '/pages/class/notice/create-notice/index',
        success: (res) => {
          console.log('跳转新建通知页面成功:', res);
        },
        fail: (err) => {
          console.error('跳转新建通知页面失败:', err);
          wx.showModal({
            title: '跳转失败',
            content: `错误信息: ${err.errMsg || '未知错误'}`,
            showCancel: false
          });
        }
      });
    } catch (error) {
      console.error('跳转新建通知页面异常:', error);
      wx.showModal({
        title: '跳转异常',
        content: `异常信息: ${error.message}`,
        showCancel: false
      });
    }
  }
});

